1.1. AProjectileBase
부모 클래스: 1. AActor
1. Configs
2. Component
2.1. Collision
Collision 컴포넌트는 투사체나 오브젝트의 충돌 영역을 정의합니다. Type 속성에 따라 Box, Sphere, Capsule, Spline 등 다양한 기하학적 형태의 충돌체를 생성할 수 있으며, 공통적으로 물리 엔진 등록 및 충돌 이벤트(OnCollision) 바인딩을 지원합니다.
2.1.2. 속성
2.1.2.1. 공통
| 속성 키 (Key) | 타입 | 기본값 | 설명 |
|---|---|---|---|
| Type | string |
필수 | 콜리전 형태를 결정합니다. (Box, Sphere, Capsule, Spline) |
| Damage | float |
0.0 |
충돌 시 피격 대상에게 전달할 데미지 수치입니다. |
| Delay | float |
0.0 |
재타격 방지 시간. 타격 후 이 시간(초) 동안은 해당 액터를 다시 치지 않습니다. |
| MaxHit | int |
0 |
최대 타격 횟수. 이 횟수만큼 타격하면 더 이상 충돌하지 않습니다. (0은 무제한) |
| TargetTags | string[] |
[] |
타격 대상 필터링. [Monster]처럼 입력하며, 해당 태그를 가진 대상만 타격합니다. 입력값이 없을 시, 타격에 제한을 두지 않습니다. |
| Debug | bool |
false |
true 설정 시 충돌 영역 및 데미지 수치에 따른 디버그 라인을 표시합니다. |
| Interval | float |
1/60 |
고급. 충돌 이벤트 확인을 할 빈도입니다. 0일 경우 매 프레임 충돌을 확인합니다. |
2.1.2.2. Box
| 속성 키 (Key) | 타입 | 기본값 | 설명 |
|---|---|---|---|
| Extent | float3 |
(0 0 0) |
박스의 중심에서 각 축 방향으로의 반지름(Half-size) |
2.1.2.3. Sphere
| 속성 키 (Key) | 타입 | 기본값 | 설명 |
|---|---|---|---|
| Radius | float |
0.0 |
구체의 반지름 |
2.1.2.4. Capsule
| 속성 키 (Key) | 타입 | 기본값 | 설명 |
|---|---|---|---|
| Radius | float |
0.0 |
캡슐의 반지름 |
| HalfHeight | float |
0.0 |
캡슐의 중심에서 끝점까지의 절반 높이 |
2.1.2.5. Spline
| 속성 키 (Key) | 타입 | 기본값 | 설명 |
|---|---|---|---|
| Asset | string |
필수 | 콜리전 경로로 사용할 스플라인 에셋 경로 |
| Segment | int |
1 |
스플라인을 따라 배치할 검사 객체(Capsule)의 개수 |
| BoundingBox | bool |
true |
세부 검사 전, 전체 영역 박스 체크로 최적화 수행 여부 |
2.2. Movement
이 컴포넌트는 투사체의 물리 이동, 유도(Homing), 비행 궤적(Waypoint), 수명을 모두 관리하는 핵심 컴포넌트입니다. 모든 시각적 요소(Mesh, Particle)와 충돌체(Collision)는 이 컴포넌트의 자식으로 등록되어 이동 경로를 공유합니다.
2.2.1. 기본 물리 및 수명 (Physics & LifeCycle)
가장 기본적인 이동 수치와 투사체의 존재 시간을 설정합니다.
| 속성 키 (Key) | 타입 | 기본값 | 설명 |
|---|---|---|---|
| InitSpeed | float3 |
(0 0 0) |
발사 시의 초기 속도입니다. (로컬 축 기준 회전 적용 가능) |
| MaxSpeed | float |
0.0 |
투사체의 최대 속도 제한입니다. (0은 제한 없음) |
| Acceleration | float |
0.0 |
전방 추진 가속도입니다. (초당 가속량) |
| GravityScale | float |
0.0 |
중력 배율입니다. (1.0 적용 시 표준 중력 가속도 적용) |
| LifeSpan | float |
5.0 |
투사체의 유지 시간(초)입니다. 종료 시 자동 제거됩니다. |
| OrientToMovement | bool |
true |
true시 컴포넌트를 이동 방향으로 회전시킵니다. |
2.2.2. 호밍 시스템 (Homing System)
적을 추적하는 알고리즘과 회전 성능을 설정합니다.
| 속성 키 (Key) | 타입 | 기본값 | 설명 |
|---|---|---|---|
| HomingStrategy | string |
None |
타겟 선정 전략. (Nearest: 최단거리, Angle: 조준선 기준) |
| HomingTags | string[] |
[] |
추적 대상 필터. 특정 태그를 가진 액터만 추적합니다. |
| HomingRange | float |
10.0 |
탐색 반경. 타겟을 인지할 수 있는 최대 거리입니다. |
| HomingAngle | float |
45.0 |
탐색 각도. (Strategy가 Angle일 때 정면 기준 허용 범위) |
| HomingTurnRate | float |
0.0 |
회전력. 초당 회전 가능한 최대 각도(Degree)입니다. |
| HomingRetargetTick | float |
0.0 |
재탐색 주기. 타겟을 갱신하는 시간 간격입니다. |
| HomingStopRange | float |
0.0 |
타겟과 가까워졌을 때 유도를 중지하는 거리입니다. |
| ForgetPrev | bool |
true |
유도가 끝난 타겟을 다시 추적하지 않을지 결정합니다. |
2.2.3. 웨이포인트 시스템 (Waypoint System)
타겟에게 가기 전 거쳐가는 중간 지점을 설정하여 곡선 비행 연출을 구현합니다.
| 속성 키 (Key) | 타입 | 기본값 | 설명 |
|---|---|---|---|
| UseWaypoint | bool |
false |
경유지 시스템 사용 여부입니다. |
| WpSpace | string |
Direction |
좌표계. (Direction: 진행 방향 상대축, World: 절대축) |
| WpBase | string |
Target |
원점. (Actor: 발사 위치 기준, Target: 타겟 위치 기준) |
| WpType | string |
Value |
계산 방식. (Value: 고정 거리, Adaptive: 타겟 거리 비례) |
| Waypoints | float3[] |
[] |
순차적으로 거쳐갈 상대 좌표(오프셋) 리스트입니다. |
2.2.4. 바운스 시스템 (Bounce System)
투사체가 벽이나 바닥 등 장애물에 충돌했을 때 튕겨 나가는 물리 반응을 설정합니다. 이 기능은 단순히 속성만 켜는 것이 아니라, 반드시 BindCollision 액션을 통해 특정 콜리전과 연결되어야 작동합니다.
| 속성 키 (Key) | 타입 | 기본값 | 설명 |
|---|---|---|---|
| ShouldBounce | bool |
false |
충돌 시 튕김 로직을 활성화할지 여부입니다. |
| Bounciness | float |
1.0 |
반발 계수. 튕길 때 유지되는 속도의 비율입니다. (1.0은 속도 유지, 0.5는 속도가 절반으로 감소) |
| MaxBounces | int |
0 |
최대 튕김 횟수. 설정한 횟수만큼 튕긴 후에는 더 이상 튕기지 않습니다. (0은 무제한) |
2.3. WObjectAnimComponent (Anim)
이 컴포넌트는 미리 제작된 애니메이션 파일을 로드하여 투사체의 위치, 회전, 크기를 프레임 단위로 제어합니다. Movement 컴포넌트의 자식으로 등록하여, 투사체가 날아가는 도중 발생하는 부가적인 애니메이션(예: 회전하며 날아가는 화살, 위아래로 흔들리는 미사일 등)을 표현하는 데 사용합니다.
2.3.1. 재생 제어 (Playback Control)
애니메이션의 기본적인 재생 방식과 속도를 설정합니다.
| 속성 키 (Key) | 타입 | 기본값 | 설명 |
|---|---|---|---|
| Asset | string |
"" |
로드할 애니메이션 파일 경로 또는 명칭입니다. |
| PlayRate | float |
1.0 |
애니메이션 재생 속도 배율입니다. (2.0은 2배속) |
| Loop | bool |
true |
애니메이션 반복 재생 여부입니다. |
| AutoPlay | bool |
true |
생성과 동시에 애니메이션을 재생할지 결정합니다. |
2.3.2. 루트 모션 설정 (Root Motion)
애니메이션 파일에 기록된 좌표 변화를 실제 컴포넌트의 트랜스폼에 어떻게 투영할지 결정합니다. 특정 축만 선택적으로 적용하여 유연한 연출이 가능합니다.
| 속성 키 (Key) | 타입 | 기본값 | 설명 |
|---|---|---|---|
| UseLoc | bool3 |
(false false false) |
애니메이션의 X, Y, Z 위치값을 적용할지 여부입니다. |
| UseRot | bool3 |
(false false false) |
애니메이션의 Pitch, Yaw, Roll 회전값을 적용할지 여부입니다. |
| UseScale | bool3 |
(false false false) |
애니메이션의 X, Y, Z 크기 변화를 적용할지 여부입니다. |
3. Action
3.1. Particle
Particle은 지정된 파티클 에셋(이펙트)을 투사체의 위치에서 재생하는 액션입니다. 주로 폭발, 발사 효과, 피격 연출 등에 사용됩니다.
3.1.1. 속성
| 속성 키 (Key) | 타입 | 기본값 | 설명 |
|---|---|---|---|
| Asset | string |
재생할 파티클 에셋의 이름입니다. (예: P_Explosion) |
3.2. Animation
Animation은 특정 컴포넌트에 애니메이션을 재생하거나 제어하는 액션입니다. 재생 속도, 반복 여부뿐만 아니라 특정 축(X, Y, Z)의 변화만 선택적으로 적용할 수 있는 기능을 제공합니다.
3.2.1. 속성
| 속성 키 (Key) | 타입 | 기본값 | 설명 |
|---|---|---|---|
| Target | string |
this | 애니메이션을 재생할 대상 컴포넌트 이름입니다. |
| Asset | string |
재생할 애니메이션 에셋의 이름입니다. | |
| Anim | string |
에셋 내에서 재생할 특정 애니메이션 데이터의 이름입니다. | |
| PlayRate | float |
1.0 |
애니메이션의 재생 속도 배율입니다. |
| Loop | bool |
false |
애니메이션의 반복 재생 여부입니다. |
| Loc | string |
XYZ |
애니메이션 위치값을 적용할 축을 지정합니다. (예: Z, XY) |
| Rot | string |
XYZ |
애니메이션 회전값을 적용할 축을 지정합니다. |
| Scale | string |
XYZ |
애니메이션 크기값을 적용할 축을 지정합니다. |
==Loc, Rot, Scale==은 아무 설정 하지 않을 시 모든 속성의 모든 좌표계 값을 샘플링 하지만, 이중 하나라도 설정하게 되면 나머지 속성은 기본적으로 샘플링 되지 않습니다.
<Animation Loc = "X" .../>
위와 같이 Loc의 X값을 샘플링하도록 하게 할 경우, Rot와 Scale은 샘플링 하지 않게 됩니다.
3.3. CurveBind
CurveBind는 특정 컴포넌트가 실행중인 애니메이션 커브 데이터를 실시간으로 특정 속성(Property)에 연결하는 액션입니다. 이를 통해 물리 수치나 컴포넌트 속성을 애니메이션 프레임에 맞춰 정교하게 제어할 수 있습니다.
<CurveBind Target="MaxSpeed" Comp="Mesh" Curve="SpeedCurve" Modifier="true" />
3.3.1. 속성
| 속성 키 (Key) | 타입 | 기본값 | 설명 |
|---|---|---|---|
| Target | string |
커브 값을 적용할 대상 속성 이름입니다. (예: MaxSpeed, GravityScale) |
|
| Comp | string |
RootComponent |
커브 데이터를 추출할 컴포넌트의 이름입니다. 해당 컴포넌트는 Anim = "true"속성이어야 합니다. |
| Curve | string |
애니메이션 파일 내에 정의된 커브 에셋의 이름입니다. | |
| Modifier | bool |
false |
true일 경우 실행 시점의 원본값에 커브를 곱하며, false일 경우 값을 덮어씁니다. |
3.4. BindCollision (Action)
이 액션은 Movement 컴포넌트와 Collision 컴포넌트를 물리적으로 연결하여, 충돌 이벤트가 발생했을 때 Movement가 물리 이벤트 로직을 실행하게 합니다.(ex. Bounce)
3.4.1. 속성 (Properties)
<Action> 태그 내에서 정의하며, 주로 OnStart나 특정 이벤트 시점에 실행합니다.
| 속성 키 (Key) | 타입 | 설명 |
|---|---|---|
| Movement | string |
반사 로직을 수행할 Movement 컴포넌트의 이름입니다. |
| Collision | string |
충돌을 감지할 Collision 컴포넌트의 이름입니다. |
4. Events
4.1. OnHit
충돌이 발생했을 때 호출됩니다. Filter 속성을 통해 특정 태그를 가진 대상에게만 반응하도록 제어할 수 있습니다.
| 속성 키 (Key) | 타입 | 기본값 | 설명 |
|---|---|---|---|
| Target | string |
필수 | 충돌을 감지할 Collision 컴포넌트의 이름입니다. |
| Filter | string[] |
[] |
특정 태그(예: Monster)를 가진 대상과 충돌했을 때만 이벤트를 발생시킵니다. 생략 시 모든 충돌에 반응합니다. |
4.2. OnLockon
호밍 시스템이 추적할 타겟을 포착(Lock-on)했을 때 호출됩니다.
| 속성 키 (Key) | 타입 | 기본값 | 설명 |
|---|---|---|---|
| Target | string |
필수 | 락온 상태를 감시할 Movement 컴포넌트의 이름입니다. |
4.3. OnBounce
투사체가 벽이나 장애물에 부딪혀 반사(Bounce)되는 시점에 호출됩니다.
| 속성 키 (Key) | 타입 | 기본값 | 설명 |
|---|---|---|---|
| Target | string |
필수 | 반사 이벤트를 감시할 Movement 컴포넌트의 이름입니다. |
4.4. OnAnimStop
재생 중인 애니메이션이 종료되었을 때 호출됩니다. (반복 재생(Loop) 설정이 false인 경우에만 유효합니다.)
| 속성 키 (Key) | 타입 | 기본값 | 설명 |
|---|---|---|---|
| Target | string |
필수 | 애니메이션 종료를 감시할 Anim 컴포넌트의 이름입니다. |